In the drafting of electronic documents it is often desirable to store periodic versions of the document so previous versions can be reviewed and undesirable changes can be reversed at a later time. As software is designed or developed, multiple developers often concurrently design interdependent segments of a larger design separately. Multiple versions of various electronic documents may be created as a developer makes changes to one portion of a design. When changes are incorporated into a larger design, modifications made by the developer may adversely affect design aspects of a segment created by another developer. When design bugs and other issues become apparent, it is not always clear which changes to various segments contributed to the problem. For the purposes of locating and fixing bugs, it is important for developers to be able to retrieve and run different versions of a design in an organized fashion to determine in which versions the problem occurs so that the source of the problem can be traced.
Version control systems are systems which monitor and track changes made to files checked in and out of a data repository. Version control systems are generally centralized stand-alone applications that control access and modifications to files stored in the central data repository. Version control systems may also be implemented as distributed systems on a file-by-file basis. These systems may be included in various software applications such as word processors.
In shared-file development situations, updates made to files are submitted to the repository so they can be accessed by other developers. Multiple versions of files are generally stored for each revision. Hierarchy data of the various versions may also be stored, the hierarchical data indicating the previous version which each stored version was derived from. Together, the hierarchical data and stored versions create a revision history that may be used to determine the substance and order of changes made during development of a design. When a user wishes to review a previous version, the previous version is retrieved from the repository.
These systems may be inefficient when many near-identical copies of a file are created when small changes are performed. Changes are also tracked in a manner such that the relationship between different revisions to the same object are not maintained. For example, a design file may contain ten design modules. If a software bug becomes apparent in one specific module, these systems do not provide methods to review previous changes to the specific module. Rather, all revisions must be searched and compared regardless of whether they include changes to the module or not.
The present invention may address one or more of the above issues.